<?php 
/**
 * authCheck 验证用户是否具有权限
 * @param  String  $rule     验证规则
 * @param  String  $uid      当前用户uid
 * @param  integer $type     如果type为1， condition字段就可以定义规则表达式
 * @param  string  $mode     验证方式
 * @param  string  $relation $relation为and时表示，用户需要同时具有规则1和规则2的权限。 $relation为or时，表示用户值需要具备其中一个条件即可。默认为or
 * @return boolean           如果用户有权限，返回true，反之则返回false
 * @author cnsecer <root@cnsecer.com> <http://www.cnsecer.com>
 */
	function authCheck($rule,$uid,$type=1, $mode='url', $relation='or'){
		//超级管理员跳过验证
		$auth=new \Library\Auth();
		//获取当前uid所在的角色组id
		$groups=$auth->getGroups($uid);
		//这里偷懒了,因为我设置的是一个用户对应一个角色组,所以直接取值.如果是对应多个角色组的话,需另外处理
		if(in_array($groups[0]['id'], C('ADMINISTRATOR'))){
			return true;
		}else{			
			return $auth->check($rule,$uid,$type,$mode,$relation)?true:false;
		}
	}
/**
 * p 打印
 * @param  任意值  $data 传入的参数
 * @return 无返回值       返回值
 * @author cnsecer <root@cnsecer.com>
 */
	function p($data){
		echo "<pre>";
		print_r($data);
	}
/**
 * get_cate_list 分类列表递归排序
 * @param  array   $cate 传入所有分类的一维数组
 * @param  integer $pid  父分类ID
 * @return array         返回一个一维数组
 * @author cnsecer <root@cnsecer.com>
 */
	function get_cate_list($cate,$pid=0){
		$arr = array();
		foreach ($cate as $v) {
			if($v['pid'] == $pid){
				$v['child'] = get_cate_list($cate,$v['id']);
				$arr[] = $v;
			}
		}
		return $arr;
	}
/**
 * get_sort_cate 获取排序后的分类列表
 * @param  array   $cate  传入所有分类的一维数组
 * @param  integer $pid   父分类ID
 * @param  integer $level 重复次数
 * @param  string  $html  标识
 * @return array          返回一个一维数组
 * @author cnsecer <root@cnsecer.com>
 */
	function get_sort_cate($cate,$pid=0,$level=0,$html="--"){
		$arr =array();
		foreach($cate as $v){
			if($v['pid'] == $pid){
				$v['level'] = $level+1;
				$v['html'] = str_repeat($html, $level);
				$arr[] = $v;
				$arr = array_merge($arr,get_sort_cate($cate,$v['id'],$level+1,$html));
			}
		}
		return $arr;
	}
/**
 * get_cate_child 获取一个分类的子分类
 * @param  array   $cate    传入所有分类的一维数组
 * @param  integer $cate_id 当需要查询的分类ID
 * @return array            返回一个多维数组
 * @author cnsecer <root@cnsecer.com>
 */

	function get_cate_child($cate,$cate_id){
		$arr =array();
		foreach ($cate as $v) {
			  if($v['pid'] == $cate_id){
				$v['child'] = get_cate_child($cate,$v['id']);
				$arr[] = $v;
				//$arr = array_merge($arr,get_cate_child($cate,$v['id'])); //此方法可返回一个一维数组
			}	
		}
		return $arr;	
	} 
/**
 * 获取当前分类的文章数量
 * @param  integer $cate_id 传入当前分类的ID  
 * @return integer          返回当前分类中文章总数
 * @author cnsecer <root@cnsecer.com> <http://www.cnsecer.com>
 */
	function get_cate_article($cate_id){
		return M('article')->where("cate_id=".$cate_id)->count();
	}